package com.tuxianchao.springboottask.task;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * created by
 *
 * @author tuxianchao
 * @date 2018/5/2 下午5:02
 */
@Component
public class SchedulerTask {

    private Logger logger = LoggerFactory.getLogger(SchedulerTask.class);
    private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");

    /**
     * @Scheduled 参数可以接受两种定时的设置，
     * 一种是我们常用的cron="* /6 * * * * ?",
     * 一种是 fixedRate = 6000，两种都表示每隔六秒打印一下内容。
     * <p>
     * <p>
     * fixedRate 说明
     * @Scheduled(fixedRate = 6000) ：上一次开始执行时间点之后6秒再执行
     * @Scheduled(fixedDelay = 6000) ：上一次执行完毕时间点之后6秒再执行
     * @Scheduled(initialDelay=1000, fixedRate=6000) ：第一次延迟1秒后执行，
     * 之后按fixedRate的规则每6秒执行一次
     * <p><p/>
     * @Async 配置任务多线程执行, 配置好任务线程池后，使用这个注解开启
     */
    @Scheduled(fixedRate = 1000)
    @Async
    public void reportCurrentTime() {
        logger.info("now：" + dateFormat.format(new Date()));
    }
}
